home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / MATH / NRPAS13 / POWELL.DEM < prev    next >
Text File  |  1991-04-29  |  1KB  |  64 lines

  1. PROGRAM d10r6(input,output);
  2. (* driver for routine POWELL *)
  3. CONST
  4.    ndim=3;
  5.    ftol=1.0e-6;
  6. TYPE
  7.    glnarray = ARRAY [1..ndim] OF real;
  8.    glndim = glnarray;
  9.    glnpbynp = ARRAY [1..ndim,1..ndim] OF real;
  10.    gl3array = glnarray;
  11. VAR
  12.    ncom : integer;
  13.    pcom,xicom : glnarray; 
  14.    fret : real;
  15.    i,iter,j,np : integer;
  16.    p : glnarray;
  17.    xi : glnpbynp;
  18.  
  19. (*$I MODFILE.PAS *)
  20. (*$I BESSJ0.PAS *)
  21.  
  22. FUNCTION fnc(x: gl3array): real;
  23. (* Programs using FNC must define the type
  24. TYPE
  25.    gl3array = ARRAY [1..3] OF real;
  26. in the main routine. *)
  27. BEGIN
  28.    fnc := 0.5-bessj0(sqr(x[1]-1.0)+sqr(x[2]-2.0)+sqr(x[3]-3.0))
  29. END;
  30.  
  31. (*$I F1DIM.PAS *)
  32.  
  33. FUNCTION func(x: real): real;
  34. BEGIN
  35.    func := f1dim(x)
  36. END;
  37.  
  38. (*$I MNBRAK.PAS *)
  39.  
  40. (*$I BRENT.PAS *)
  41.  
  42. (*$I LINMIN.PAS *)
  43.  
  44. (*$I POWELL.PAS *)
  45.  
  46. BEGIN
  47.    np := ndim;
  48.    xi[1,1] := 1.0; xi[1,2] := 0.0; xi[1,3] := 0.0;
  49.    xi[2,1] := 0.0; xi[2,2] := 1.0; xi[2,3] := 0.0;
  50.    xi[3,1] := 0.0; xi[3,2] := 0.0; xi[3,3] := 1.0;
  51.    p[1] := 1.5; p[2] := 1.5; p[3] := 2.5;
  52.    powell(p,xi,ndim,np,ftol,iter,fret);
  53.    writeln('Iterations:',iter:3);
  54.    writeln;
  55.    writeln('Minimum found at: ');
  56.    FOR i := 1 to ndim DO write(p[i]:12:6);
  57.    writeln;
  58.    writeln;
  59.    writeln('Minimum function value =',fret:12:6);
  60.    writeln;
  61.    writeln('True minimum of function is at:');
  62.    writeln(1.0:12:6,2.0:12:6,3.0:12:6)
  63. END.
  64.